International Telecommunication Union Telecommunication Standardization Sector (ITU-T) G. 711 is an international standard for coding of voice-frequency signals (see Non-patent literature 1). ITU-T G.711 adopts non-uniform pulse code modulation (non-uniform PCM) as a coding scheme and defines two types of nonlinear quantization schemes: μ-law and A-law. In the following, the “voice-frequency signal” will be referred to as an audio signal.
MPEG-4 is an international standard for visual and audio coding formulated by ISO/IEC JTC 1/SC 29 WG 11, and MPEG-4 Part 3 prescribes an audio lossless coding technique and the like (see Non-patent literature 2).
Unary coding is a known coding method for an integer (see Non-patent literature 3). Unary coding is to express an integer k (equal to or greater than 0) in the form of k successive integers A and the following one integer B. The integer B differs from the integer A. If the integer A is 1, the integer B is 0. If the integer A is 0, the integer B is 1.
For example, a unary code expressing an integer k=0 is 0 (or 1). A unary code expressing an integer k=1 is 10 (or 01). A unary code expressing an integer k=2 is 110 (or 001). A unary code expressing an integer k=3 is 1110 (or 0001). A unary code expressing an integer k=4 is 11110 (or 00001). A unary code expressing an integer k=5 is 111110 (or 000001).
Unary coding is characterized in that: (1) any integer k can be coded regardless of how large it is, (2) an integer k is coded and decoded without using a table that associates the integer k with a code, so that there is no need for a memory for storing the table, (3) a code expressing an integer k comprises k+1 bits, and (4) a code expressing a large integer k comprises a larger number of bits than a binary code expressing the same integer k.
Huffman coding is a known entropy coding method (see Non-patent literature 3). Huffman coding is to assign a variable length code to an input value to be coded according to the appearance frequency of the input value. The higher the appearance frequency of the input value, the shorter the code assigned to the value is.
Huffman coding is characterized in that: (1) an input value is coded and decoded by using a table that associates the input value with a code, (2) the maximum value that can be coded depends on the size of the table (that is, a larger table is needed as the variety of the input values to be coded increases), and (3) in the case where a large table is used, a Huffman code expressing an input value that appears less frequently may comprise a larger number of bits than a binary code expressing the same input value.
Golomb-Rice coding is also a known coding method for an integer (see Non-patent literature 3). A Golomb-Rice code expressing an integer t that is equal to or greater than 0 is obtained by coding a quotient q determined according to the following formula (1) using a predetermined integer s (Rice parameter) into a unary code, coding the remainder r determined according to the following formula (2) into an s-bit binary code, and combining the unary code of the quotient q and the binary code of the remainder r. In the following formulas, the symbol └•┘ represents a floor function.
                    q        =                  ⌊                      t                          2              s                                ⌋                                    (        1        )                                r        =                  t          -                      q            ·                          2              s                                                          (        2        )            
Golomb-Rice coding is characterized in that: (1) the length of a Golomb-Rice code depends on the integer s, (2) a Golomb-Rice code expressing the integer t comprises q+s+1 bits, (3) the larger the integer t, the longer the Golomb-Rice code expressing the integer t is, since Golomb-Rice coding involves unary coding of the quotient q, and (4) in the case where the input value may be positive or negative, the input value is converted into an integer t equal to or greater than 0 before Golomb-Rice coding.